07-Function
playground29.dart
Code
void main() {
  showOutput(square(2));
  showOutput(square(2.5));
  print(square.runtimeType);
}
dynamic square(var num) {
  return num * num;
}
void showOutput(var msg) {
  print(msg);
}
Output
4
6.25
(dynamic) => dynamic
playground30.dart
Code
void main() {
  // Arrow Function    =>
  showOutput(square(2));
  showOutput(square(2.5));
}
dynamic square(var num) => num * num;
void showOutput(var msg) {
  print(msg);
}
Output
4
6.25
playground31.dart
Code
main() {
  var list = ['apples', 'bananas', 'oranges'];
  list.forEach(printF);
}
void printF(item) {
  print(item);
}
Output
apples
bananas
oranges
playground32.dart
Code
main() {
  var list = ['apples', 'bananas', 'oranges'];
  list.forEach((item) {
    print(item);
  });
}
Output
apples
bananas
oranges
playground33.dart
Code
void main() {
  print(sum(2, 2));
}
dynamic sum(var num1, var num2) => num1 + num2;
Output
4
playground34.dart
Code
void main() {
  print(sum(num2: 4, num1: 2));
}
dynamic sum({var num1, var num2}) => num1 + num2;
Output
6
playground35.dart
Code
void main() {
  print(sum(10, num2: 2));
}
dynamic sum(var num1, {var num2}) => num1 + num2;
Output
12
playground36.dart
Code
void main() {
  print(sum(10));
  print(sum(10, num2: 2));
}
dynamic sum(var num1, {var num2 = 0}) => num1 + num2;
Output
10
12
08-Class
playground37.dart
Code
class Person {
  String name;
  int age;
  void showOutput() {
    print(name);
    print(age);
  }
}
void main() {
  Person person1 = Person();
  person1.name = 'Mahmud';
  person1.age = 35;
  person1.showOutput();
}
Output
Mahmud
35
playground38.dart
Code
class Person {
  String name;
  int age;
  Person(String name, [int age = 18]) {
    this.name = name;
    this.age = age;
  }
  void showOutput() {
    print(name);
    print(age);
  }
}
void main() {
  Person person1 = Person('Mahmud');
  person1.showOutput();
  Person person2 = Person('Mahmud', 35);
  person2.showOutput();
}
Output
Mahmud
18
Mahmud
35
playground39.dart
Code
class Person {
  String name;
  int age;
  Person(this.name, [this.age = 18]);
  void showOutput() {
    print(name);
    print(age);
  }
}
void main() {
  Person person1 = Person('Mahmud');
  person1.showOutput();
  Person person2 = Person('Mahmud', 35);
  person2.showOutput();
}
Output
Mahmud
18
Mahmud
35
playground40.dart
Code
class Person {
  String name;
  int age;
  Person(this.name, [this.age = 18]);
  // named constructor
  Person.guest() {
    name = 'Guest';
    age = 19;
  }
  void showOutput() {
    print(name);
    print(age);
  }
}
void main() {
  Person person1 = Person('Mahmud');
  person1.showOutput();
  var person2 = Person('Jack', 35);
  person2.showOutput();
  var person3 = Person.guest();
  person3.showOutput();
}
Output
Mahmud
18
Jack
35
Guest
19
playground41.dart
- final: type will be defined by inferred value
Code
class X {
  final name;
  static const int age = 10;
  X(this.name);
}
void main() {
  var x = X('Jack');
  print(x.name);
  print(X.age);
  /* Wrong way
    x.name = 'Jill';
    print(x.name);
  */
  var y = X('Jill');
  print(y.name);
}
Output
Jack
10
Jill
playground42.dart
Code
// Class
class Vehicle {
  String model;
  int year;
  Vehicle(this.model, this.year) {
    print(this.model);
    print(this.year);
  }
  void showOutput() {
    print(model);
    print(year);
  }
}
class Car extends Vehicle {
  double price;
  Car(String model, int year, this.price) : super(model, year);
  void showOutput() {
    print(this.price);
  }
}
void main() {
  var car1 = Car('Accord', 2014, 150000);
  car1.showOutput();
}
Output
Accord
2014
150000.0
playground43.dart
- Define two calculated properties: right and bottom.
Code
class Rectangle {
  num left, top, width, height;
  Rectangle(this.left, this.top, this.width, this.height);
  num get right => left + width;
  set right(num value) => left = value - width;
  num get bottom => top + height;
  set bootom(num value) => top = value - height;
}
void main() {
  var rect = Rectangle(3, 4, 20, 15);
  print(rect.left);
  print(rect.right);
  print(rect.bottom);
  rect.right = 12;
  print(rect.left);
  print(rect.top);
  rect.bootom = 6;
  print(rect.top);
}
Output
3     // left
23    // right = left + width = 3 + 20
19    // bottom = top + height = 4 + 15
-8    // left = value - width = 12 - 20
4     // top = 4
-9    // top = value - height = 6 - 15
09-Exception Handling
playground44.dart
Code
int mustGreaterThanZero(int val) {
  if (val <= 0) {
    throw Exception('Value must be greater than zero');
  }
  return val;
}
void letVerifyTheValue(var val) {
  var valueVerification;
  try {
    valueVerification = mustGreaterThanZero(val);
  } catch (e) {
    print(e);
  } finally {
    if (valueVerification == null) {
      print('Value is not accepted');
    } else {
      print('Value verified: $valueVerification');
    }
  }
}
void main() {
  letVerifyTheValue(10);
  letVerifyTheValue(0);
}
Output
Value verified: 10
Exception: Value must be greater than zero
Value is not accepted